package com.demo.quartz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
 * quartz步骤
 * Job 表示一个工作，要执行的具体内容。类似于TimerTask类。需要实现方法 void execute(JobExecutionContext context)
 * JobDetail 表示一个具体的可执行的调度程序，Job 是这个可执行程调度程序所要执行的内容，另外 JobDetail 还包含了这个任务调度的方案和策略。
 * Trigger 代表一个调度参数的配置，什么时候去调。
 * Scheduler 代表一个调度容器。类似于Timer类。一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与 JobDetail 组合，就可以被 Scheduler 容器调用。
 *    1、新建一个类实现job 用做具体实现
 *    2、定义JobDetail，注意需要实现定义Job，实现execute方法即可
 *      JobDetail job = newJob(HelloJob.class)
 *           .withIdentity("job1", "group1")
 *           .build();
 *    3、定义触发器，即任务的执行策略
 *     Trigger trigger = newTrigger()
 *       .withIdentity("trigger1", "group1")
 *       .startNow()
 *             .withSchedule(simpleSchedule()
 *               .withIntervalInSeconds(40)
 *               .repeatForever())
 *       .build();
 *    4、告诉Quartz去调度使用了trigger触发器的job
 *       scheduler.scheduleJob(job, trigger);
 */
@EnableScheduling
@SpringBootApplication(exclude = EnableAutoConfiguration.class)
public class QuartzApplication {

    public static void main(String[] args) {
        SpringApplication.run(QuartzApplication.class, args);
    }

}
